iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
DevOps

從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊系列 第 4

白字黑字記錄,足以降低有人要你當替罪羔羊

  • 分享至 

  • xImage
  •  

記錄可以少走一些坑

因為主管、同事的推坑陷害,背上莫須有的罪名,讓你的分紅考績化為烏有,那你一定要觀看這篇,畢竟防人之心不可無,多一些知識,就多一層防護

之前,介紹過一些使用docker會用到的基本指令,但每建一個相同的Container,並進Container執行指令、更新或下載一些套件,需要做大量的重複工作。工程師就是越懶越好,重複性的工作,可以依靠撰寫程式碼來達成自動化,減少重複性的工作

接下來就會來學習如何撰寫Dockerfile,將會用到的程式碼、指令和安裝套件,一併打包成一個Container,這樣也可以明確知道這個Container裡面有哪些東西,也可以將這個Dockerfile,分享出去給別人修改或是建立一模一樣的Container,可以避免開發環境所造成的糾紛

開始撰寫Dockerfile,可以使用自己熟悉的編輯器(vscode),或vim先看完整的Dockerfile

FROM amazonlinux

RUN yum -y update && \
    yum -y install httpd php mysql php-mysql wget tar.x86_64

WORKDIR /var/www/html

RUN wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/awsu-spl/spl-13/scripts/app.tgz

RUN tar xvfz app.tgz

RUN chown apache:root /var/www/html/rds.conf.php

CMD apachctl -D FOREGROUND

以下會敘述,Dockerfile用到的指令

Container都會需要image當底層,Dockerfile使用amazon所支援的linux,也可以替換其他image,例如:Centos、Ubuntu...。

FROM [image] => FROM amazonlinux

有了image之後,就會需要更新、安裝,以及執行指令,有些指令是原本的image沒有的就會需要安裝

RUN [Linux Command]
RUN yum -y update && \
    yum -y install httpd php mysql php-mysql wget tar.x86_64

通常安裝和更新後,就會需要選一個工作目錄開始撰寫程式,在Dockerfile裡有一個指令是可以指定工作目錄,若沒有指定,預設為根目錄(/)。

WORKDIR [directory]
WORKDIR /var/www/html

這邊我是下載一個WEB的壓縮檔,之後再解壓縮,以及改變檔案裡的權限

RUN wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/awsu-spl/spl-13/scripts/app.tgz
RUN tar xvfz app.tgz
RUN chown apache:root /var/www/html/rds.conf.php

當你的Container正要開始運行時,若想要預設執行一些指令,顯示一些資訊。最後一行我是啟動web server,避免執行完就結束,指令如下

CMD [Linux Commnad]
CMD apachctl -D FOREGROUND

以上是常用的Dockerfile語法,撰寫Dockerfile其實就像蓋房子一層一層的疊加上去,可以選擇你想要的原料材質,以及室內裝潢,任由自己發揮


上一篇
群雄割據還是一統天下
下一篇
想要拿到更多的分紅,且無腦的完成任務
系列文
從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言